#include <stdio.h>
#include <stdlib.h>
typedef struct data
{
    int T;
    int H;
}data;
//a为需要的大小    b为原本的大小
data * my_realloc(data *D,size_t a,size_t b)
{
    if(b==0)
    {
        free(D);
        D=NULL;
        return NULL;
    }
    if(D==NULL){
        D=(data *)malloc((int)a*sizeof(data));
    }
    data *D2=(data *)malloc((int)a*sizeof(data));
    for(int i=0;i<(b/sizeof(data));i++)
    {
       D2[i]=D[i];
    }
    if(a<b)
    {
        for(int i=0;i<(a/sizeof(data));i++)
            {
            D2[i]=D[i];
            }
    }
    free(D);
    D=NULL;
    return D2;
}
int main(int argc, char const *argv[])
{
    data * D1;
    D1=(data *)malloc(10*sizeof(data));
    D1[0].H=80;
    D1[0].T=20;
    D1[1].H=82;
    D1[1].T=22;
    D1[2].H=83;
    D1[2].T=23;
    int a;
    printf("请输入你要扩大的容量：\n");
    scanf("%d",&a);
    D1=my_realloc(D1,a,10*sizeof(data));
    for(int i=0;i<20;i++)
    {
        printf("D1 T %d D1 %d \n",D1[i].T,D1[i].H);
    }
    return 0;
}
